<?php

	class sstruyen extends story{
		
		public $patternUrl = ''; 
		public $startPage = 0;
		
		public function getChapters($storyUrl, $storyId){
			

			if(!isset($_SESSION['story_id'])){
					
				$_SESSION['story_id'] = $storyId;
			}
				
			if($storyId != $_SESSION['story_id']){
			
				unset($_SESSION['last_chapt']);
				unset($_SESSION['chapts']);
				$_SESSION['story_id'] = $storyId;
			}
			
			
			$model = new Model();
			
			$html = file_get_html($storyUrl);

			$findChuong = $html->find('.chuongmoi', 1);
			if(!$findChuong){
				$findChuong = $html->find('.chuongmoi', 0);
			}
			
			if(!$findChuong){
				return 'het';
			}
			
			$ret = $findChuong->children();
			
			if($ret[0]->tag == 'br'){
				
				 return 'het';
			}
			
			foreach($ret as $value){
				
				
				//divChild là phần tử chứa các link chapters
				$divChild = $value->children(0);
				
				//Lấy tập, quyển
				$patternTap = '/(Tập|Quyển)([^:]*):/i';
				preg_match($patternTap, $divChild->attr['title'], $matcheTap);
				
				if($divChild->tag != 'a') continue;
				
				if($matcheTap[2]){
					$tap = trim($matcheTap[2]);
					$_SESSION['tap'] = $tap;
				}else{
					$tap = $_SESSION['tap'];
				}
				
				//Chapter cuối vừa lấy
				$patternChapt = '/(Chương)([^:]*):/i';
				preg_match($patternChapt, $divChild->attr['title'], $matcheChap);
				
				/*
				 *  $matcheChap thường sẽ có dạng
				 *  $matchChap = array('Quyển|Tập 1', 'Quyển|Tập', '1');
				 *  Index 2 của matcheChap là số quyển hoặc số tập
				 */
				if($matcheChap[2]){
					$matchChap = 'true';
					$chapt = (int) trim($matcheChap[2]);
					
					/*
					 * Kiểm tra số chapt đã có trong SESSION chưa
					 * Nếu tồn tại rồi, gán chapt cho SESSION['last_chapt'] (Tức phần tử chap cuối cùng) + 1
					 */
					
					if(in_array($chapt, $_SESSION['chapts'])){
						
						$notNumeric = 'false cos it\'s numberic';
						$in_array = 'true';
						$chapt = (int) $_SESSION['last_chapt'] + 1;
						$_SESSION['chapts'][] = $chapt;
						$_SESSION['last_chapt'] = $chapt;
						
					}else{
						/*
						 * Nếu không tồn tại trong SESSION
						 * Kiểm tra chapt có phải là số không, nếu không, gán chap cho SESSION['last_chapt']
						 */
						$in_array = 'false';
						if(!is_numeric($chapt) || empty($chapt) || $chapt == ''){
							$chapt = (int) $_SESSION['last_chapt'] + 1;
							$notNumeric = 'true';
						}else{
							$notNumberic = 'false';
						}
						$_SESSION['chapts'][] = $chapt;
					}
					
					
				}else{
					/*
					 * Trường hợp không lấy được chap và link
					 * vẫn lấy chapt bằng $_SESSION['last_chapt'] để sau này update bằng tay
					 */
					$matchChap = 'false';
					$chapt = (int) $_SESSION['last_chapt'] + 1;
					$_SESSION['chapts'][] = $chapt;
				}
				$_SESSION['last_chapt'] = $chapt;
			
				
				/*
				 *  Nếu tag là a, đồng nghĩa với đây là link chapter
				 */
				if($divChild->tag == 'a'){
					$index = $tap . '_' . $chapt; // Tạo index bằng tập_chapt
					if($divChild->attr['href']){
						
						$links[$index] = array(
								'link' => 'http://sstruyen.com' . $divChild->attr['href'],	
								'title'=> $divChild->attr['title'],
								'tap'  => $tap,
								'chapt' => $chapt,
								'session_last_chapt' => $_SESSION['last_chapt'],
								'session_chapts'=>$_SESSION['chapts'],
								'matchChap'	=> $matchChap,
								'in_array'	=> $in_array,
								
						);
					}else{
						//Kiểm tra nếu có trường hợp Dom lỗi sẽ không lấy được attr
						// VD: <a title="Ví dụ "đầu tiên"" href=""> 
						$innerText = $divChild->innertext;
						preg_match('/<div style="width:8%; float:left">(.*)<\/div>(.*)/i', $innerText, $matchess);
						$links[$index] = array('title'=> $matchess[2], 'link'=> 'Error', 'chapt'=> $chapt);
					}
				}
				
				
			}
			
			$html->__destruct();
			unset($ret);
			sleep(3);
			return $links;
			
		}
		
		public function getChapterContent($href){
			$pos = strpos($href, 'http://');
			if($pos !== false){
				$html = file_get_html($href);
				$content_html = $html->find('#chapt-content', 0)->innertext;
				$html->__destruct();
				
				return $content_html;
			}else{
				return false;
			}
		
		}
		
		
		
		
		public function autoGetChapters($story){
			
			$_SESSION['story_id'] = $story['id'];
			unset($_SESSION['last_chapt']);
			$isFound = false;
			$storyUrl = $story['startPage'];
			
			$html = file_get_html($storyUrl);
			
			$findChuong = $html->find('.chuongmoi', 1);
			if(!$findChuong){
				$findChuong = $html->find('.chuongmoi', 0);
			}
				
			if(!$findChuong){
				return 'het';
			}

			$ret = $findChuong->children();

			if($ret[0]->tag == 'br'){
				 return 'het';
			}
			
			$model = new Model();
			
			$model->select = "title";
			$model->where = "story_id = '" . $story['id'] . "'";
			$model->limit = '1';
			$model->order = "thutu DESC";
			$model->getdata('truyen_chuong_link');
			$tmpLastTruyenTitle = $model->fetchOne();
			$lastChuongTitle = $tmpLastTruyenTitle['title'];
		
			
			$model->select = "thutu";
			$model->where = "truyen_id = '" . $story['id'] . "'";
			$model->limit = '1';
			$model->order = "thutu DESC";
			$model->getdata('truyen_chuong');
			
			$tmpThutu = $model->fetchOne();
			$resultLastThutu = $tmpThutu['thutu'];

			if($resultLastThutu){
				for($ii = 1; $ii <= $resultLastThutu; $ii++){
					$_SESSION['chapts'][] = $ii;
				}
			}
			
			foreach($ret as $key => $value){
				
				//divChild là phần tử chứa các link chapters
				$divChild = $value->children(0);
				if($divChild->tag != 'a') continue;
				$chuongLink = 'http://sstruyen.com' . $divChild->attr['href'];
	
				$model->select = "*";
				$model->where = "link = '" . $chuongLink . "' AND story_id = '" . $story['id'] . "'";
				$model->getdata('truyen_chuong_link');
				$resultLink = $model->fetchOne();
				
				if($resultLink){
			
					/* echo '<pre>';
					print_r($divChild->attr['title']);
					echo '</pre>'; */
					// Kiểm tra chương này có phải chương lấy cuối cùng trong db không
					if($chuongLink == $story['getlink_last']){
						
						if(!$ret[$key + 1]){
							
							$links[] = array(
									'link' => 'linkLastInDOM',
									'title'=> 'linkLastInDOM',
									'tap'  => '',
									'chapt' => '',
									//'session_last_chapt' => $_SESSION['last_chapt'],
									//'session_chapts'=>$_SESSION['chapts'],
									//'matchChap'	=> $matchChap,
									//'in_array'	=> $in_array,
							);
							return $links;
						}else{
								$isFound = true;
						}
					}
					
					continue;
				}else{
					
					/*
					 *  Nếu chưa có link trong db thì kiểm tra trường hợp tên chương ở sstruyen có bằng với
					 *  	link cuối của truyện đang lấy trong db không
					 *  Nếu bằng thì kiểm tra có phải đây là chương cuối trong DOM không, có thì return lại $links để tiếp tục
					 *  	scan manual qua page khác. Nếu không bằng thì tức là chưa có link trong db -> tiếp tục tăng thứ tự
					 */
					$innerText = $divChild->innertext;
					preg_match('/<div style="width:8%; float:left">(.*)<\/div>(.*)/i', $innerText, $matchess);
					
					$model->select = "title";
					$model->where = "title = '" . $matchess[2] . "' AND story_id = '" . $story['id'] . "'";
					$model->order = '';
					$model->limit = '';
					$model->getdata('truyen_chuong_link');
					$tmpResultTitle = $model->fetchOne();
					$resultTitle = $tmpResultTitle['title'];
					
					if($resultTitle){
						
						if($lastChuongTitle == $resultTitle){
							if(!$ret[$key + 1]){
						
								$links[] = array(
										'link' => 'linkLastInDOM',
										'title'=> 'linkLastInDOM',
										'tap'  => '',
										'chapt' => '',
										//'session_last_chapt' => $_SESSION['last_chapt'],
										//'session_chapts'=>$_SESSION['chapts'],
										//'matchChap'	=> $matchChap,
										//'in_array'	=> $in_array,
								);
								return $links;
							}else{
								/*
								 * Trường hợp vẫn còn link sau link cuối cùng trong db thì sẽ tiếp túc scan
								* Và gán isFound = true
								*/
								$isFound = true;
								continue;
							}
						}else{
							continue;
							
							/*
							 * Trường hợp không thấy link trong db tức là
							* 	- Một là đây là link mới
							*/
						}
						
					}
					
					
					
					
					if($isFound == true){
					
						if(!$_SESSION['last_chapt']){
							$model->select = "thutu";
							$model->where = "truyen_id = '" . $story['id'] . "'";
							$model->order = "thutu DESC";
							$model->getdata('truyen_chuong');
							$resultLastChapter = $model->fetchOne();
							$chapt = $resultLastChapter['thutu'] + 1;
						
							$_SESSION['last_chapt'] = $chapt;
							$_SESSION['chapts'][] = $chapt;
						}else{
						
							$chapt = $_SESSION['last_chapt'] + 1;
							$_SESSION['last_chapt'] = $chapt;
							$_SESSION['chapts'][] = $chapt;
						}
						
					}
					
					
				
				}
				
				//Lấy tập, quyển
				$patternTap = '/(Tập|Quyển)([^:]*):/i';
				preg_match($patternTap, $divChild->attr['title'], $matcheTap);
				
				if($matcheTap[2]){
					$tap = trim($matcheTap[2]);
					$_SESSION['tap'] = $tap;
				}else{
					$tap = $_SESSION['tap'];
				}
				
				
				/*
				 *  Nếu tag là a, đồng nghĩa với đây là link chapter
				 */
				if($divChild->tag == 'a'){
				
					//echo $value->tag . ' - ' . $divChild->tag . '<br />' . $divChild->innertext;
					$index = $tap . '_' . $chapt; // Tạo index bằng tập_chapt
					if($divChild->attr['href']){
					
						$links[$index] = array(
								'link' => 'http://sstruyen.com' . $divChild->attr['href'],	
								'title'=> $divChild->attr['title'],
								'tap'  => $tap,
								'chapt' => $chapt,
								//'session_last_chapt' => $_SESSION['last_chapt'],
								//'session_chapts'=>$_SESSION['chapts'],
								//'matchChap'	=> $matchChap,
								//'in_array'	=> $in_array,
								
						);
					}else{
						
					
						//Kiểm tra nếu có trường hợp Dom lỗi sẽ không lấy được attr
						// VD: <a title="Ví dụ "đầu tiên"" href="">
						if($isFound == true){
						
							$links[$index] = array('title'=> $matchess[2], 'href'=> 'Error', 'chapt'=>$chapt);
						}
					}
				}
				
			}
			
			$html->__destruct();
			unset($ret);
			
			return $links;
		}
		
	}